<script setup lang="ts">
import { Ref, ref } from "vue";
import { AddData, GetAll } from "../api/Services";

defineProps<{ msg: string }>();

const count = ref(0);

const foo = ref();
const cnt = ref();
const bar = ref();

async function getFoo() {
  foo.value = await GetAll(null);
}

async function add() {
  cnt.value = await AddData({ a: cnt.value, b: 1 });
}

(window as any)["postBar"] = postBar;
async function postBar(data: any) {
  bar.value = data;
  console.log("DotNet invoke the function with the param", data);
  return bar.value;
}
</script>

<template>
  <h1>{{ msg }}</h1>

  <p>
    Recommended IDE setup:
    <a href="https://code.visualstudio.com/" target="_blank">VSCode</a>
    +
    <a href="https://github.com/johnsoncodehk/volar" target="_blank">Volar</a>
  </p>

  <p>See <code>README.md</code> for more information.</p>

  <p>
    <a href="https://vitejs.dev/guide/features.html" target="_blank"> Vite Docs </a>
    |
    <a href="https://v3.vuejs.org/" target="_blank">Vue 3 Docs</a>
  </p>

  <button type="button" @click="count++">count is: {{ count }}</button>
  <p>
    Edit
    <code>components/HelloWorld.vue</code> to test hot module replacement.
  </p>

  <div>
    <p>foo:</p>
    <button type="button" @click="getFoo">click to get foo</button>
    <span> {{ foo }} </span>
  </div>
  <div>
    <p>bar:</p>
    <span>
      {{ bar }}
    </span>
  </div>
  <div>
    <button type="button" @click="add">click to add</button>
    <span> count: {{ cnt }} </span>
  </div>
</template>

<style scoped>
a {
  color: #42b983;
}

label {
  margin: 0 0.5em;
  font-weight: bold;
}

code {
  background-color: #eee;
  padding: 2px 4px;
  border-radius: 4px;
  color: #304455;
}
</style>
